package com.parenting.util;

import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.sms.v20190711.SmsClient;
import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20190711.models.SendSmsResponse;
import lombok.AllArgsConstructor;
import lombok.Data;

//导入可选配置类
// 导入 SMS 模块的 client
// 导入要请求接口对应的 request response 类
@Data
@AllArgsConstructor
public class TXSendSms {
    /**
     * 腾讯云  secretId
     */
    private String secretId;
    /**
     * 腾讯云  secretId
     */
    private String secretKey;
    //短信应用 ID
    private String appid;
    //短信签名内容
    private String sign;
    //短信模板 ID
    private String templateID;
    //+86为国家码，182********为手机号，最多不要超过200个手机号
    //String[] phoneNumbers = { "+8618210195648","+8618340052533","+8615764227658","+8618266450965","+8618601923470"};
    private String[] phoneNumbers;

    String[] templateParams;//对应模板中{1}

    /***
     *
     * @param secretId
     * @param secretKey
     * @param appid
     * @param sign
     * @param templateID
     * @param phoneNumbers
     * @param templateParams
     * @throws TencentCloudSDKException
     */
    public static void sendSms(String secretId, String secretKey,
                               String appid, String sign, String templateID, String[] phoneNumbers, String[] templateParams)
            throws TencentCloudSDKException {
        //必要步骤： 实例化一个认证对象，入参需要传入腾讯云账户密钥对 secretId 和 secretKey
        Credential cred = new Credential(secretId, secretKey);

        ClientProfile clientProfile = new ClientProfile();
        //SDK 默认用 TC3-HMAC-SHA256 进行签名 非必要请不要修改该字段

        clientProfile.setSignMethod("HmacSHA256");
        // 实例化 SMS 的 client 对象 第二个参数是地域信息，可以直接填写字符串 ap-guangzhou，或者引用预设的常量
        SmsClient client = new SmsClient(cred, "", clientProfile);
        //实例化一个请求对象，根据调用的接口和实际情况，可以进一步设置请求参数 您可以直接查询 SDK 源码确定接口有哪些属性可以设置
        SendSmsRequest req = new SendSmsRequest();

        // 短信应用 ID: 在 [短信控制台] 添加应用后生成的实际 SDKAppID，例如1400006666
        req.setSmsSdkAppid(appid);

        // 短信签名内容: 使用 UTF-8 编码，必须填写已审核通过的签名，可登录 [短信控制台] 查看签名信息
        req.setSign(sign);

        //短信模板 ID: 必须填写已审核通过的模板 ID，可登录 [短信控制台] 查看模板 ID
        req.setTemplateID(templateID);

        //下发手机号码，采用 e.164 标准，+[国家或地区码][手机号] 例如+8613711112222

        req.setPhoneNumberSet(phoneNumbers);

        req.setTemplateParamSet(templateParams);

        // 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的 返回的 res 是一个SendSmsResponse 类的实例，与请求对象对应
        SendSmsResponse res = client.SendSms(req);

        // 输出 JSON 格式的字符串回包
        System.out.println(SendSmsResponse.toJsonString(res));

    }

    public static void main(String[] args) {
        String[] phone = {"+8618210195648"};
        String[] code = {"88288"};
        try {
            TXSendSms.sendSms("AKIDOMMbJaiLFwiwueDVcU1kALI0Z9zbjzSn", "LITvFKBoCL0ed9P4dEuQkgOxAAlT5RaV",
                    "1400488934", "威海优珍", "879807", phone, code);
        } catch (TencentCloudSDKException e) {

        }

    }


    //以下为测试代码，随机生成验证码
    private static int newcode;
//
//    public static String getNewcode() {
//        setNewcode();
//        return newcode+"";
//    }

    public static String getNewcode() {
        newcode =(int)(Math.random() * 9999) + 100;
       return newcode+"";  //每次调用生成一次四位数的随机数
    }
}
